package com.cwnu.sw.cys.core.websocket.domain.vo.resp;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * WSMsgMark类用于表示WebSocket消息标记的响应数据
 * 它包含了一个消息标记的列表，每个标记项详细描述了对消息的各种操作
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WSMsgMark {
    /**
     * markList是一个消息标记的列表，包含了多个消息标记项
     * 每个标记项都描述了一条消息被用户进行的特定操作，比如点赞或举报
     */
    private List<WSMsgMarkItem> markList;

    /**
     * WSMsgMarkItem类是消息标记项的详细信息
     * 它描述了一条消息被用户进行的特定操作，包括操作者、消息ID、标记类型、标记数量和动作类型
     */
    @Data
    public static class WSMsgMarkItem {
        /**
         * uid表示操作者的用户ID
         * 它标识了执行标记操作的用户
         */
        @ApiModelProperty("操作者")
        private Long uid;

        /**
         * msgId表示被标记的消息的ID
         * 它用于唯一标识一条消息
         */
        @ApiModelProperty("消息id")
        private Long msgId;

        /**
         * markType表示标记的类型，比如点赞或举报
         * 该字段的值对应于MessageMarkTypeEnum枚举类型
         */
        @ApiModelProperty("标记类型 1点赞 2举报")
        private Integer markType;

        /**
         * markCount表示被标记的数量
         * 它记录了该消息被当前用户标记的次数
         */
        @ApiModelProperty("被标记的数量")
        private Integer markCount;

        /**
         * actType表示动作的类型，比如确认或取消标记操作
         * 该字段的值对应于MessageMarkActTypeEnum枚举类型
         */
        @ApiModelProperty("动作类型 1确认 2取消")
        private Integer actType;
    }
}
